1.0 Field of the Invention
The following invention is related to the area of digital communications. More particularly, the following invention is related to a method and apparatus for performing low latency Turbo Code encoding of a frame of data.
2.0 Background of the Invention
Turbo Codes are a form of error correction that typically use recursive systematic convolutional (“RSC”) codes. The RSC codes (also referred as constituent codes in the context of turbo codes) are used to encode a block of data in natural order and interleaved order. The resulting parity bits generated by these encodings are transmitted with the original frame of data, often referred to as the systematic data. Other variations of Turbo Codes are well known including codes that use more than two RSC encodings, codes that only encode portions of the entire frame of data and non systematic constituent codes.
During the encoding process the RSC encoders receive the systematic data “symbols” (typically a bit of data, but may be multiple bits as well). As each new data symbol is received the “state” of the encoder is updated and the state of the encoder changes. The parity symbols are generated based on the state of the encoder and the input data. These encoders arg referred to as “recursive” because the state of the encoder is fed back to the input of the encoder making the current state of the encoder dependant on all the previous systematic data that had been received since the coding was initiated.
The initial and termination states of the RSC encoders affect the encoding operation. In some cases zero termination is used where the encoders start and end at the zero state. In other cases tail biting is used during the encoding process.
Tail biting involves passing the data to be encoded through the encoder a first time in order to determine a new start state for the encoder. Once this new start state is determined the data is encoded a second time. If done correctly, the start and the end state are the same which eliminates the need to transmit the information associated with the termination.
Tail biting reduces the total number of parity bits that must be transmitted because any parity bits associated with termination to a known state (typically zero) of the encoder may be omitted. However, tail biting increases the complexity and delay associated with the encoding process as twice the number of encoding steps must be performed.
In general, encoding is a simple process and may be performed quickly using a highly clocked encoding circuit. However, in some instances it may be desirable to perform very high speed encoding in order to limit end-to-end transmission latency, which can be considerable in an iterative decoding scheme such as turbo codes. In other cases it will not be possible to clock the conventional Turbo Code encoder circuit at a sufficient rate to achieve the desired throughput. Because of the recursive nature of RSC codes used in Turbo Codes it is difficult to encode in parts. Thus, there is a need for a highly efficient method and apparatus for performing low latency Turbo Code encoding.